# python数据基础第九节：简单计算
"""
python数据基础第九节：数据计算
    1、简单计算：直接使用简单的加、减、乘、除
    2、数据标准化：是指将数据按比例缩放，使其落入特定区间，一般我们使用0-1标准化：x* = (x-min)/(max-min)
    3、数据分组：根据数据分析对象的特征，按照一定的数值指标，把数据分析对象划分为不同的区间部分进行研究，以揭示其内在的联系和规律性-->
        cut(series(需要分组的数据),bins(分组的划分数组),right(分组的时候，右边是否闭合),labels(分组的自定义标签，可以不定义))
    4、日期和转换：date= to_datetime(dateString,format)
        %Y ---> 代表年份
        %m ---> 代表月份
        %d ---> 代表日期
        %H ---> 代表小时
        %M ---> 代表分钟
        %S ---> 代表秒
    5、日期格式化：是指将日期型的数据，根据给定的格式，转为字符型的数据
        apply(lambda x:处理逻辑)
        datetime.strftime(x,format)
    6、日期抽取：是指从日期格式里面，抽取部分属性
        datetime(所在的列).dt.property
            second ---> 1-60秒
            minute ---> 1-60分钟
            hour ---> 1-24小时
            day ---> 一个月的第几天，1-31
            month ---> 月份，1-12
            year ---> 年份
            weekday ---> 一个星期中的第几天，1-7
"""
# 导出数据的模块在DataFrame模块下
from pandas import DataFrame, read_csv, to_datetime
import pandas
from datetime import datetime

df1 = read_csv("E:\Python\pyspark_demo01\out_data\data9.csv", sep="|")
# 计算总共需要多少钱
result = df1.price * df1.num
# 新建一列为sum， 并将计算出来的总值给入
df1["sum"] = result
print("计算总共需要多少钱:{}".format(df1))

# 将数据标准化在（0-1之间）
df2 = read_csv("E:\Python\pyspark_demo01\out_data\data10.csv", sep=",")
# 标准化算法（该行指 - 最小值）/（最大值-最小值）
scale = (df2.score - df2.score.min()) / (df2.score.max() - df2.score.min())

# 数据分组
df3 = read_csv("E:\Python\pyspark_demo01\out_data\data11.csv", sep="|")

# 分组的划分数组
bins = [min(df3.cost) - 1, 20, 40, 60, 80, 100, max(df3.cost) + 1]

# 分组之后的标签
labels = ["20以下", "20到40", "40到60", "60到80", "80到100", "100以上"]
# 右边闭合
moren = pandas.cut(df3.cost, bins)
# 添加右边不闭合
no_moren = pandas.cut(df3.cost, bins, right=False)
# 加上标签
biaoqian = pandas.cut(df3.cost, bins, right=False, labels=labels)

# 日期转换
df4 = read_csv("E:\Python\pyspark_demo01\out_data\data12.csv", sep=",")
# 转换为日期格式
new_df4_db = to_datetime(df4.注册时间, format="%Y/%m/%d")
# 日期格式化
df_dt_str = new_df4_db.apply(lambda x: datetime.strftime(x, "%d-%m-%Y"))
# 日期抽取
df4_year = new_df4_db.dt.year  # 年
df4_second = new_df4_db.dt.second  # 秒
df4_minute = new_df4_db.dt.minute  # 分钟
df4_hour = new_df4_db.dt.hour  # 小时
df4_day = new_df4_db.dt.day  # 第几天
df4_month = new_df4_db.dt.month  # 那个月
df4_weekday = new_df4_db.dt.weekday  # 那个星期
